package com.liang.leetcode.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * OAuth配置属性类
 * 从application.yaml中读取OAuth相关配置
 */
@Data
@Component
@ConfigurationProperties(prefix = "oauth")
public class OAuthProperties {

    /**
     * Github OAuth配置
     */
    private OAuthConfig github = new OAuthConfig();


    /**
     * OAuth配置类
     */
    @Data
    public static class OAuthConfig {
        /**
         * 客户端ID
         */
        private String clientId;

        /**
         * 客户端密钥
         */
        private String clientSecret;

        /**
         * 回调地址
         */
        private String redirectUri;

        /**
         * 授权地址
         */
        private String authorizeUrl;

        /**
         * 获取访问令牌地址
         */
        private String accessTokenUrl;

        /**
         * 获取用户信息地址
         */
        private String userInfoUrl;
    }

    /**
     * 根据平台类型获取配置
     */
    public OAuthConfig getConfigByPlatform(String provider) {
        Map<String, OAuthConfig> configMap = new HashMap<>();
        configMap.put("GITHUB", github);
        return configMap.get(provider.toUpperCase());
    }
}